0 REM 'IDIOT COMPILER RESTORE APP V1.00 2.28.15

10  PRINT:PRINT:PRINT "iDIOT SOURCE RESTORE"
11 ON ERR GOTO 20
12  PRINT CHR$(4);"VERIFY PROGRAM.LISTING"
13  PRINT "ERR:   PLEASE RESET COMPILER BEFORE"
14  PRINT "     INITIZILZING A RESTORE OPERATION.":END

20 INPUT "PROGRAM TO RESTORE: ";A$:A$=A$+".SRC"
21 ON ERR GOTO 23
22 PRINT CHR$(4);"VERIFY";A$:GOTO 50
23 PRINT "ERR:  NO SUCH ARCHIVE.":END

50 L=0:DIM L$(1000):ON ERR GOTO 59
51 PRINT CHR$(4);"OPEN";A$
52 PRINT CHR$(4);"READ";A$

55  GET LP$: IF  ASC (LP$) = 13 OR  ASC (LP$)= 141 GOTO 57
56 L$(L) = L$(L) + LP$: GOTO 55
57 PRINT " PROCESSING: ";L;"  ";L$(L):L = L + 1:L$(L) = "": GOTO 55
59 PRINT  CHR$ (4);"CLOSE":L=0

100 L=L+1
101 IF L$(L)="NEW.LINE" THEN L=L+1:GOTO 200
102 IF L$(L)="END" THEN GOTO 500

105 PRINT CHR$(4);"WRITE";B$:PRINT L$(L):PRINT CHR$(4):GOTO 100




200 IF B$="" GOTO 205
201 PRINT CHR$(4);"CLOSE"
205 B$=L$(L):GOTO 300
206 PRINT CHR$(4);"OPEN";B$
207 PRINT CHR$(4)
209 PRINT "*** CREATING ";B$:GOTO 100



300 REM 'SKIP FILE
301 ON ERR GOTO 303
302 PRINT CHR$(4);"VERIFY";B$:GOTO 310
303 GOTO 206

310 L=L+1
311 IF L$(L)="NEW.LINE" THEN L=L+1:GOTO 200
312 IF L$(L)="END" 	THEN GOTO 500
313 GOTO 310



500 PRINT CHR$(4);"CLOSE"
501 L=L+1:LP$=L$(L):PRINT "** CREATING LINE LIST"
502 PRINT CHR$(4);"OPEN";LP$
503 PRINT CHR$(4);"WRITE";LP$

504 L=L+1:IF L$(L)="END" GOTO 508
505 PRINT L$(L):GOTO 504

508 PRINT L$(L)
509 PRINT CHR$(4);"CLOSE"


600 PRINT "** CREATING VARIABLE TABLE"
601 L=L+1:LP$=L$(L)
602 PRINT CHR$(4);"OPEN";LP$
603 PRINT CHR$(4);"WRITE";LP$
604 
605 L=L+1:IF L$(L)="" GOTO 609
606 PRINT L$(L):GOTO 605

609 PRINT CHR$(4);"CLOSE"
610 PRINT:PRINT:
611 P=LEN(A$):P=P-4:L$(L)=LEFT$(L$(L),P)
612 PRINT "** FILE ";L$(L)" HAS BEEN RESTORED"
613 PRINT:END









